[IA64] enable ioports_deny_access for dom0
authorawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Tue, 8 Aug 2006 20:36:21 +0000 (14:36 -0600)
committerawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Tue, 8 Aug 2006 20:36:21 +0000 (14:36 -0600)
Signed-off-by: Tristan Gingold <tristan.gingold@bull.net>
xen/arch/ia64/xen/mm.c
xen/arch/ia64/xen/xensetup.c

index 6e3b31bf6374c5de61f6d5c7ab6d7742701fbd13..a31a054c4f6237444f799babb2276baa296434b2 100644 (file)
@@ -838,7 +838,7 @@ ioports_permit_access(struct domain *d, unsigned long fp, unsigned long lp)
 
     for (off = fp_offset; off <= lp_offset; off += PAGE_SIZE)
         __assign_domain_page(d, IO_PORTS_PADDR + off,
-                             ia64_iobase + off, ASSIGN_nocache);
+                             __pa(ia64_iobase) + off, ASSIGN_nocache);
 
     return 0;
 }
@@ -859,18 +859,23 @@ ioports_deny_access(struct domain *d, unsigned long fp, unsigned long lp)
     int ret;
     struct mm_struct *mm = &d->arch.mm;
     unsigned long off;
+    unsigned long io_ports_base;
     unsigned long fp_offset;
     unsigned long lp_offset;
 
     ret = rangeset_remove_range(d->arch.ioport_caps, fp, lp);
     if (ret != 0)
         return ret;
+    if (d == dom0)
+        io_ports_base = __pa(ia64_iobase);
+    else
+        io_ports_base = IO_PORTS_PADDR;
 
-    fp_offset = IO_SPACE_SPARSE_ENCODING(fp) & ~PAGE_MASK;
+    fp_offset = IO_SPACE_SPARSE_ENCODING(fp) & PAGE_MASK;
     lp_offset = PAGE_ALIGN(IO_SPACE_SPARSE_ENCODING(lp));
 
-    for (off = fp_offset; off <= lp_offset; off += PAGE_SIZE) {
-        unsigned long mpaddr = IO_PORTS_PADDR + off;
+    for (off = fp_offset; off < lp_offset; off += PAGE_SIZE) {
+        unsigned long mpaddr = io_ports_base + off;
         unsigned long port;
         volatile pte_t *pte;
         pte_t old_pte;
index bc7014d8820affeb8eef7ef9c1d76520efb291d0..70e34ed0014bc152866b3c7b249ecbe7d5ef6434 100644 (file)
@@ -525,8 +525,10 @@ printk("num_online_cpus=%d, max_cpus=%d\n",num_online_cpus(),max_cpus);
 
     init_trace_bufs();
 
-    if (opt_xencons)
+    if (opt_xencons) {
         console_endboot();
+        serial_endboot();
+    }
 
     domain0_ready = 1;